<?php
/**
 * Eren Framework
 * 
 * Define the Interface of Session Class
 * 
 * @category System
 * @author Manu Soros Leu
 * @copyright manusoros@gmail.com
 */

abstract class Eren_Session_Abstract
{   
    /**
     * Get SessionID
     * 
     * @return string
     */
    abstract public function getSessionID();

     /**
     * Set Session Key and Value
     * 
     * @param string $key
     * @param int|string|array|object $value
     * @throws Eren_Session_Exception
     */
    abstract public function set($key, $value);
    
    /**
     * Get Session By Key
     * 
     * @param string $key
     * @param int|string|array|object $default
     * @throws Eren_Session_Exception
     */
    abstract public function get($key, $default = NULL);
    
    /**
     * Get ALl Sessions
     * 
     * @throws Eren_Session_Exception
     * @return array;
     */
    abstract public function getAll();
    
    /**
     * Delete Session By Key
     * 
     * @param string $key
     * @throws Eren_Session_Exception
     */
    abstract public function delete($key);
    
    /**
     * Delete All Session
     * 
     * @throws Eren_Session_Exception
     */
    abstract public function delAll();
}